In general, with an increase in the number of servers, the complexity of operation of servers has increased and the operation cost has become an issue. Server integration which is a technique of integrating a plurality of servers into one server is attracting attention as a technique of reducing the operation cost. A virtual machine technique of logically partitioning one computer by a predetermined proportion is known as a technique of realizing server integration. In a virtual machine technique, firmware (or middleware) such as a hypervisor, for example, partitions a physical machine into a plurality of logical partitions (LPARs) and allocates computer resources (typically, processors, memories, and input/output (I/O) devices) to each LPAR so that an operating system (OS) operates on each LPAR. Alternatively, one host OS (an OS that directly uses a physical machine) is executed on one server, and a hypervisor operating on the host OS performs the partition process so that a plurality of guest OSs (OSs operating on the host OS) is operated. The virtual machine technique realizes server integration so that OSs operating in a plurality of servers and software operating on the OSs operate in one server.
Moreover, although the virtual machine technique is a technique which was generally used in a large-scale computer such as a mainframe, the virtual machine technique has come to be used more widely in a low-end server as a result of improvement in performance of microprocessors in recent years. A computer such as a server which employs the virtual machine technique includes a plurality of virtual machines that operates a guest (a generic term of a guest OS and software operating on the guest OS) and a virtual machine monitor (hereinafter referred to as a “VMM”) that controls the virtual machines.
A processor that provides and expands a function of supporting VMMs is known. An example of such a processor is an x86 processor, for example. Among processors employed in low-end servers, particularly, the x86 processor provides and expands the function of supporting VMMs, and an x86 server having the x86 processor mounted thereon improves the performance of virtual machines.
For example, the x86 processor has a function of starting a guest operation and an assist function of monitoring the guest operation and suspending the guest operation to call a VMM when a specific event occurs. The assist function is called virtualization technology (VT) in processors of Intel Corporation and is called secure virtual machine (SVM) in processors of Advanced Micro Devices, Inc., for example. Moreover, the start of the guest operation is called “VMENTRY” and the suspension of the guest operation is called “VMEXIT”. The assist function can designate an area used for saving and recovery of a guest state. In the processors of Intel Corporation, the area used for saving and recovery of the guest state is included in a data structure called a virtual machine control structure (VMCS) and is referred to from a VMCS pointer in a processor. Similarly, in the processors of Advanced Micro Devices, Inc., the area is included in a data structure called a virtual machine control block (VMCB) and is referred to from a VMCB pointer in a processor.
PTL 1 discloses a virtualization system (hereinafter referred to as a “2-level virtual machine system”) which includes a plurality of VMMs (host VMM and guest VMM) and in which the guest VMM that further manages VMs operates on one of the plurality of VMs that are managed by the host VMM. The x86 processor does not support the 2-level virtual machine system. In PTL 1, in order to construct the 2-level virtual machine system, the host VMM emulates the assist function to operate the guest VMM.